﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

namespace VisaValeCheck
{
    /// <summary>
    /// Todos os plugins devem herdar esta classe.
    /// </summary>
    public abstract class VisaValeCheckPluginBase
    {
        public abstract string Nome { get; }
        public abstract string Descricao { get; }        
        public abstract string Autor { get; }

        public delegate void EventoNoPluginDelegate(VisaValeCheckPluginBase plugin, string mensagem);
        private delegate void X();

        public event EventoNoPluginDelegate Evento;
        
        public void Sobre()
        {
            MessageBox.Show(Autor);
        }        
        
        protected void CallEvento(string mensagem)
        {
            if (Evento != null)
            {
                X delX = delegate()
                {
                    Evento(this, mensagem);
                };
                Apoio.Dispatcher.Invoke(delX, null);
            }
        }
        public abstract void Executar(VisaSaldo visaSaldo);        
    }
}
